test(ci): add live smoke test for ci scopes select-all path#1460
Merged
mergify[bot] merged 3 commits intoMay 29, 2026
Conversation
Member
Author
|
This pull request is part of a Mergify stack:
|
This was referenced May 26, 2026
This was referenced May 26, 2026
Contributor
Merge ProtectionsYour pull request matches the following merge protections and will not be merged until they are valid. 🟢 ⛓️ Depends-On RequirementsWonderful, this rule succeeded.Requirement based on the presence of
🟢 🤖 Continuous IntegrationWonderful, this rule succeeded.
🟢 👀 Review RequirementsWonderful, this rule succeeded.
🟢 Enforce conventional commitWonderful, this rule succeeded.Make sure that we follow https://www.conventionalcommits.org/en/v1.0.0/
🟢 🔎 ReviewsWonderful, this rule succeeded.
🟢 📕 PR descriptionWonderful, this rule succeeded.
|
dbda41d to
0ebb4a3
Compare
96a0757 to
14ce64c
Compare
This was referenced May 27, 2026
Member
Author
Revision history
|
0ebb4a3 to
47ac6dc
Compare
JulianMaurin
previously approved these changes
May 28, 2026
f67c01e to
4680d78
Compare
3105241 to
2f82693
Compare
Pull request has been modified.
`ci queue-info::write_github_output` formatted a unique `ghadelimiter_<uuid-v4>` to guard against a metadata payload that happens to contain its own heredoc delimiter. The actual contract is "32 unpredictable hex chars", not "a UUID per RFC 4122" — the delimiter is never parsed by anyone, only matched as a string. Pull 16 random bytes straight from `getrandom::fill` and hex-encode them. Drops `uuid` from the direct deps (it stays unreferenced and disappears from `Cargo.lock`), with `getrandom` taking its place — which `uuid` was already pulling in transitively, so the net add is zero new code shipped to the binary. The local helper is six lines. Same blast radius for a maintainer-attack story, smaller surface to read. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> Change-Id: Ib6599e9b6fca49281186b726a63e4641fa32596e
… parsing
The workspace had two YAML parsers — both forks of the archived
`dtolnay/serde-yaml`. `mergify-config` used `serde_norway` for
`.mergify.yml`; `mergify-ci` used `serde_yaml_ng` for merge-queue
metadata in PR bodies and git notes. Same job, two crates, two
transitive `unsafe-libyaml*` trees in Cargo.lock.
Standardize on `serde_yaml_ng` for both. The decision is grounded
in concrete signal, not vibe:
Metric serde_norway serde_yaml_ng
───────────────────────── ───────────── ─────────────
Reverse-deps on lib.rs 229 (78 dir.) 618 (349 dir.)
GitHub stars 53 109
Last commit 2025-08-04 2025-09-14
Bus factor (recent prs) 1 (solo) merges externals
Maintainer statement v0.9.40 title README: explicit
"I'm gonna upstream-compat
maintain this" intent
unsafe-libyaml backend forked ("…- canonical
norway")
Open since 2024-06-10 2024-05-03
License Apache-2.0 MIT (= upstream)
`serde_yaml_ng` wins on every axis that matters for the "will this
still be alive in two years" question: three-times the ecosystem
adoption, more recent activity, accepts third-party PRs, declares
the maintenance commitment in writing, and uses the canonical
`unsafe-libyaml` rather than a parallel-fork backend.
Functional surface is identical for both of our use shapes —
`from_str` to a typed struct for ci, `from_str` to `Value`
then convert to `serde_json::Value` for config validation.
Migration is purely a rename at the one call site.
Cargo.lock drops `serde_norway` and `unsafe-libyaml-norway`.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Change-Id: If5d28d2c4259127181bace5bafb0ac02c78d8f7b
Pin the contract before porting `ci scopes` to Rust. The new test exercises the "no base provided" branch — pass `--head HEAD` without `--base` and the command must list every configured scope as touched. This is the one execution path through `ci scopes` that doesn't shell out to `git diff`, so the test stays hermetic inside the tmp dir the `cli` fixture runs in (no git init, no remote fetch, no Mergify API). The Python implementation passes today. The follow-up port lands on top and the same smoke test exercises the Rust binary, catching any wire-format or exit-code drift between the two implementations. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> Change-Id: I14468b7046c449104675aea0a07a273eab479316
4680d78 to
f58073c
Compare
JulianMaurin
approved these changes
May 29, 2026
Base automatically changed from
devs/jd/worktree-rust-port/standardize-workspace-serde-yaml-ng-yaml-parsing--f5d28d2c
to
main
May 29, 2026 07:38
kozlek
approved these changes
May 29, 2026
Contributor
Merge Queue Status
This pull request spent 17 minutes 43 seconds in the queue, including 17 minutes 9 seconds running CI. Required conditions to merge
|
38 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Pin the contract before porting
ci scopesto Rust. The new testexercises the "no base provided" branch — pass
--head HEADwithout
--baseand the command must list every configured scopeas touched. This is the one execution path through
ci scopesthat doesn't shell out to
git diff, so the test stays hermeticinside the tmp dir the
clifixture runs in (no git init, noremote fetch, no Mergify API).
The Python implementation passes today. The follow-up port lands
on top and the same smoke test exercises the Rust binary,
catching any wire-format or exit-code drift between the two
implementations.
Co-Authored-By: Claude Opus 4.7 noreply@anthropic.com
Depends-On: #1447